package com.edu.service;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;

import org.springframework.web.multipart.MultipartFile;

import com.edu.exception.FileException;
import com.edu.vo.FileVO;
import com.edu.vo.SimpleTree;

/**
 * 
 * MVC 的服务层
 * 业务逻辑层，负责业务模块的逻辑应用设计
 * @author Administrator
 *
 */
public interface FileService {

	/**
	 * 创建目录或者文件，包括多级目录或文件
	 * 
	 * @param dir
	 * @param name
	 * @throws IOException 
	 * @throws FileException 
	 */
	void createDocument(String name) throws IOException, FileException;
	/**
	 * 删除目录或者文件
	 * 如果是文件需要删除当前文件，如果是目录需要删除目录并删除该目录下的所有文件
	 * @param name
	 * @throws FileException 
	 * @throws IOException 
	 */
	public void deleteFile(String name) throws FileException, IOException;
	/**
	 * 重命名文件或者目录
	 * @param name
	 * @param rename 
	 * @param name2 
	 * @throws FileException 
	 * @throws IOException 
	 */
	public void renameFile(String name, String rename) throws IOException, FileException;
	
	/**
	 * 下载文件或者目录
	 * @param name
	 */
	public void downloadFile(String name);
	
	/**
	 * 上传文件或者目录
	 * @param name
	 */
	void uploadFile(MultipartFile file) throws FileNotFoundException;
	/**
	 * 查看文件 
	 * 将文件的内容读入到内存，并以字符串形式返回
	 * @param name
	 * @param name 
	 * @return 文件字符串
	 * @throws FileNotFoundException 
	 * @throws IOException 
	 */
	public String showDocument(String name) throws FileNotFoundException, IOException;
	
	/**
	 * 查看目录
	 * 进入到该目录查看其中的文件和文件夹
	 * @param name
	 * @return 文件
	 * @throws FileException 
	 */
	public List<FileVO> enterDirectory(String dir) throws FileException;
	
	/**
	 * 修改文档 
	 * @param name
	 * @return
	 * @throws FileException 
	 * @throws Exception 
	 */
	void editDocument(String name, String text) throws FileException;
	/**
	 * 创建目录
	 * @param dir
	 * @param name
	 * @throws FileException 
	 * @throws IOException 
	 */
	void createDirectory(String name) throws IOException, FileException;
	
	SimpleTree getFileTree() throws FileException;
	
	void copyToDir(String name,String targetDir) throws IOException;
	File getFileByName(String name);
	
}
